#ifndef PAGINATOR_H
#define PAGINATOR_H

#include <QWidget>
#include <QPushButton>
#include <QList>
#include <QLineEdit>

#include "pagebutton.h"

class Paginator : public QWidget
{
    Q_OBJECT
public:
    explicit Paginator(int count, QWidget *parent = nullptr);

private:
    void setBtnStyle(QPushButton* btn);

    void initSignalsAndSlots();

    // 跳转到page页
    void jumpToPage(int page);
    // page <= 5的情况
    void jumpToPageCase1();
    // page >= pageCount - 4的情况、
    void jumpToPageCase2();
    // page <= 5的情况
    void jumpToPageCase3();

private slots:
    void prevPage();
    void nextPage();
    void clickPageBtn();

signals:
    // 跳转到指定⻚数的信号
    void pageChanged(int page);

private:
    int pageCount = 7;  // 总页数
    int currentPage = 1;    // 当前页数
    const int pageSize = 20;    // 每页显示的条目数
    // 上一页和下一页按钮
    QPushButton* prevPageBtn = nullptr;
    QPushButton* nextPageBtn = nullptr;
    // 页面切换按钮
    QList<PageButton*> pages;   // 保存7个PageButton
    // 跳转到指定页
    QLineEdit* pageEdit = nullptr;
};

#endif // PAGINATOR_H
